<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="<?php echo SOURCE;?>/css/common.css">

<h1>ePHP模型使用说明 - 原生SQL查询</h1>
<p>6.models的示例中介绍了ePHP封装的链式操作的方法，对你来说是不是很简单呢？ 当然在实际情况下，有时候需要多表进行join查询，如果再用model的链式操作就比较费劲了。</p>

<p>如果是这样，那就用原生的SQL查询吧，原生sql查询直接调用数据库驱动，不用拼装sql，查询的效率当然非常的快啦！比较而言。
<br />
由于使用原生的SQL，故模型也不用继承model了，仔细看个示例，你会看到 <dfn>class testModel extends model{...}</dfn> 如果使用原生sql，直接<dfn>class testModel{...}</dfn>就ok了
</p>

<p>ePHP提供了3中数据库驱动的支持mysqli mysql sqlite支持，默认使用mysqli，当然你可以在配置中配置使用哪种驱动，在main.config.php中<dfn>'dbdriver'=> 'mysqli',</dfn></p>
<h2>使用演示：</h2>
<code>
function find_data()<br />
{<br />
　　$db = new db();<br />
　　return $db->fetch_arrays("select * from t_test limit 5");<br />
}<br />
</code>

<p>并且ePHP默认只是多数据库。conf/db.config.php是配制多数据的帐号的地方。在这里如果你想链接别的数据库，比如mysql primary，那<dfn>new db('primary')</dfn> ePHP会用primary的配制链接数据库。</p>
<p>上个示例model的链式操作也可以使用多数据库，只要指定一下$this->dbconfig('primary') 即可，链接primary数据库。</p>

<p>如果是insert update等操作，$db->query($sql)就ok了。</p>

<p class="important">mysql mysqli的驱动主要提供了 query() fetch_array fetch_arrays fetch_object fetch_objects 4个查询方法，<br />
分别代表：以数组的形式返回一条数据、以数组返回多条数据、以对象的形式返回一条、以对象的相似返回多条数据。
<br />
当然mysqli驱动，还封装了其他的方法：<dfn>query() getLastSql() insert_id() affected_rows()</dfn>等，详细见ePHP开发手册chm。
</p>

<p>
关于getLastSql()的用法，在使用model类查询的时候，如果想看一下最后执行的sql，那可以这样,$this->getLastSql() 当然，使用原生sql查询的就不必要了。哈哈！
</p>


<h2>ePHP链式操作使用原生sql查询</h2>
<p>model类的链式操作，也可以使用sql查询，model 的query（）方法提供了，直接执行sql的接口，<br />你可以执行insert update select，如果是sql是查询select的，那么你还可以使用find() findAll()等来获取执行结果。</p>
<p>当然了，现在我们要用model的query和 find() findAll(),那么，你当前的textModel 必须继承model 了。class testModel extends model {...}</p>
<p>示例：</p>
<code>
class testModel extends model<br />
{<br />
...<br />
function find_data()<br />
{<br />
　　return $this->query("select * from t_test limit 5")->findObjs();<br />
}<br />
</code>


<br /><br /><br />
<samp>示例：testModel.php源代码：</samp>
<?php echo $this->code;?>